#include <iostream>
#include <stdlib.h>

// recibe por parametro la cantidad de jugadores a crear
int main(int argc, char **argv) {

	if (argc != 2) {
		std::cout << "Cantidad de parametros incorrecta" << std::endl;
		return -1;
	}

	bool salir = false;
	int procesosACrear = atoi(argv[1]);
	int cantProcesos = 0;
	pid_t pid;

	while (!salir) {
		pid = fork();

		//Chequeo de errores
		if (pid == -1) {
			std::cout << "No se pudo crear un nuevo proceso" << std::endl;
			exit(-1);
		}

		//Ejecuta el nuevo proceso y luego finaliza
		if (pid == 0) {
			std::cout << "Ejecutando proceso " << getpid() << std::endl;
			exit(0);
		}

		//Verifica si ya se crearon la cantidad de procesos pedidos
		else {
			cantProcesos++;
			if (cantProcesos == procesosACrear)
				salir = true;
		}

	}

	//Espero a que todos los procesos hijos finalicen
	for (int i = 0; i < procesosACrear; ++i)
		wait();

}
